home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / sbin / doptconf < prev    next >
Text File  |  2006-04-04  |  6KB  |  233 lines

  1. #!/bin/sh
  2. # Version 1.1
  3. # Store some stuff on a usb stick to avoid losing configs and updates when exiting pentoo
  4. # Copyright 2005 Michael Zanetta grimmlin@pentoo.ch
  5.  
  6. BACK_UP="\033[1K\033[0G"
  7. NORMAL="\033[0m"
  8. WARN="\033[33;1m"
  9. BAD="\033[31;1m"
  10. BOLD="\033[1m"
  11. GOOD="\033[32;1m"
  12.  
  13. PENTOODIR="/mnt/usbstick/pentoo/"
  14.  
  15. DOROOT=0
  16. DONESSUS=0
  17. DOETC=0
  18. DOFP=0
  19. DOTREE=0
  20. EXIT=0
  21.  
  22. source /sbin/functions.sh
  23.  
  24.  
  25. doe2fs() {
  26.     dd if=/dev/zero of="${PENTOODIR}"$1.img bs=1M count=$2
  27.     mke2fs -q -F -m 0 "${PENTOODIR}"$1.img
  28. }
  29.  
  30. docpdir() {
  31.     mkdir -p /mnt/$1
  32.     mount -o loop "${PENTOODIR}"$1.img /mnt/$1
  33.     cd /mnt/
  34.     cp -a /$1 ./
  35.     umount /mnt/$1
  36.     rm -rf /mnt/$1
  37. }
  38.  
  39. domount() {
  40.     mount -o loop "${PENTOODIR}"$1.img /$1
  41. }
  42.  
  43. parse_opt() {
  44.         case "$1" in
  45.                 *\=*)
  46.                         echo "$1" | cut -f2 -d=
  47.                 ;;
  48.         esac
  49. }
  50.  
  51. dostuff() {
  52.     if [ ! -e "${PENTOODIR}".pentoorc ]; then
  53.     # Put the menus to ask the user
  54.  
  55.  
  56.  
  57. : ${DIALOG=dialog}
  58.  
  59. $DIALOG --timeout 20 --title "USB STICK FOUND" \
  60.         --yesno "I just found a usb stick plugged in. \
  61. The Pentoo LiveCD allows you to put some stuff on a usb stick. \
  62. This stuff includes :  /etc/ /root/ nessus_plugins ExploitTree \
  63. and fingerprints databases. \n\n\
  64. Is that your stick : ${DETECTED} ? \n\n\
  65. Please be sure to backup files on stick before doing this... \n\n\
  66. Do you want to copy some software to your key ?" 0 0
  67.  
  68. case $? in
  69.   0)
  70.     EXIT="0";;
  71.   1)
  72.     EXIT="1";;
  73.   255)
  74.     EXIT="1";;
  75. esac
  76.  
  77.  
  78.     if [ "${EXIT}" -eq "0" ]; then
  79.  
  80. tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/soft$$
  81.  
  82. trap "rm -f $tempfile" 0 1 2 5 15
  83.  
  84. $DIALOG --item-help --backtitle "Pentoo Linux - Sticky USB Configurator" \
  85.     --title "Software Checklist" \
  86.         --checklist "You can select what software should be stored. \n\n\
  87. NOTE: /etc and /root are stored in ext2 FS file. Export \n\
  88. reports directly to /mnt/usbstick to read them in other OSes\n\
  89. WARNING: This script don't check for necessary space so \n\
  90. be sure of the space left on the device... \n\n\
  91. Press SPACE to toggle an option on/off. \n\n\
  92.   Which of the following should be stored ?" 20 61 4 \
  93.         "root"         "Copy root to usb stick 10 MB"           ON  "This will store your configs and preferences" \
  94.         "etc"   "Backup system settings 15 MB"         ON  "This will store the system configs" \
  95.         "ExploitTree"   "Backup the Exploit Tree ~20 MB"         ON  "Allows you to keep SecurityForest's ExploitTree stored" \
  96.         "nessus"       "Nessus's plugins ~65 MB unregistered"              off "You will be able to update and keep the plugins" 2> $tempfile
  97.  
  98.  
  99. retval=$?
  100.  
  101. choice=`cat $tempfile`
  102. case $retval in
  103.   0)
  104.     echo "'$choice' chosen.";;
  105.   1)
  106.     EXIT=1;;
  107.   255)
  108.     EXIT=1;;
  109. esac
  110.  
  111.  
  112.         cut -f1-10 -d'"' --output-delimiter=' ' $tempfile > /tmp/soft
  113.         SOFTWARE=`cat /tmp/soft`
  114.         for x in ${SOFTWARE}
  115.         do
  116.                 case "${x}" in
  117.                         root)
  118.                                 DOROOT=1
  119.                         ;;
  120.                         ExploitTree)
  121.                     DOTREE=1
  122.                 ;;
  123.                         nessus)
  124.                                 DONESSUS=1
  125.                         ;;
  126.                         etc)
  127.                                 DOETC=1
  128.                         ;;
  129.                         fingerprints)
  130.                                 DOFP=1
  131.                         ;;
  132.                 esac
  133.         done
  134.  
  135.     # this ends for Exit=0
  136.     fi
  137.  
  138.     if [ "${EXIT}" -eq "0" ]; then
  139.         mkdir -p "${PENTOODIR}"
  140.         if [ "${DOROOT}" -eq '1' ]; then
  141.             ebegin "   Copying /root to usbstick"
  142.             doe2fs root 10 &>/dev/null
  143.             docpdir root
  144.             domount root
  145.             sed -i -e '/screencfg/d' /etc/conf.d/local.start
  146.             eend $?
  147.         fi
  148.         if [ "${DOETC}" -eq '1' ]; then
  149.             ebegin "   Copying /etc to usbstick"
  150.             doe2fs etc 15 &>/dev/null
  151.             docpdir etc
  152.             domount etc
  153.             sed -i -e '/mnt\/etc/d' /etc/mtab
  154.             sed -i -e '/kbdconfig/d' -e '/doptconf/d' /etc/conf.d/local.start
  155.             eend $?
  156.         fi
  157.         if [ "${DOTREE}" -eq '1' ]; then
  158.             ebegin "   Copying Exploit Tree to usbstick"
  159.             mkdir -p "${PENTOODIR}"ExploitTree/
  160.             cp -a /opt/pentoo/ExploitTree* "${PENTOODIR}"
  161.             rm -rf /opt/pentoo/ExploitTree*
  162.             ln -sf "${PENTOODIR}"ExploitTree/ /opt/pentoo/ExploitTree
  163.             ln -sf "${PENTOODIR}"ExploitTree.pl /opt/pentoo/ExploitTree.pl
  164.             eend $?
  165.         fi
  166.         if [ "${DOFP}" -eq '1' ]; then
  167.             ebegin "   Copying FingerPrints DB to usbstick"
  168.             mkdir -p "${PENTOODIR}"fingerprints/
  169.             cp -a /var/lib/fingerprints "${PENTOODIR}"
  170.             rm -rf /var/lib/fingerprints
  171.             ln -sf "${PENTOODIR}"fingerprints/ /var/lib/fingerprints
  172.             eend $?
  173.         fi
  174.         if [ "${DONESSUS}" -eq '1' ]; then
  175.             ebegin "   Copying nessus's plugins to usbstick"
  176.             echo "   This can take quite long on usb1 devices"
  177.             mkdir -p "${PENTOODIR}"nessus/
  178.             cp -a /usr/lib/nessus/ "${PENTOODIR}"
  179.             rm -rf /usr/lib/nessus/
  180.             ln -sf "${PENTOODIR}"nessus/ /usr/lib/nessus/
  181.             eend $?
  182.         fi
  183.  
  184.         # Creating a "user profile" to store software options put on the stick
  185.         mkdir -p "${PENTOODIR}"
  186.         touch "${PENTOODIR}".pentoorc
  187.         echo $SOFTWARE > "${PENTOODIR}".pentoorc
  188.  
  189.     # Syncing it to flush the drive
  190.     echo -e "   Syncing disk, this can take some time..."
  191.     mount -o remount /mnt/usbstick/
  192.  
  193.     fi
  194.     fi
  195. }
  196.  
  197. CMDLINE="`cat /proc/cmdline`"
  198. # Scan CMDLINE for any specified stick= arguments
  199. for x in ${CMDLINE}
  200. do
  201.     case "${x}" in
  202.         stick\=*)
  203.             DEVDIR=`parse_opt "${x}"`
  204.         ;;
  205.     esac
  206. done
  207.  
  208. if [ -z "${DEVDIR}" ]; then
  209.     DEVDIR="/dev/sda1"
  210. fi
  211.  
  212.  
  213. # First, look at the size to prompt user
  214.  
  215. DETECTED=`disktype "${DEVDIR}" | grep -e Volume -e system | sed -e 's/^  //' -e 's/(.*//'`
  216.  
  217. # Check if if it's booted from usb stick
  218.  
  219. ISRW=`mount | grep /mnt/cdrom | grep rw`
  220.  
  221. if [ -n "${ISRW}" ];
  222. then
  223.     PENTOODIR="/mnt/cdrom/pentoo/"
  224.     dostuff
  225.     exit 0
  226. else
  227.     if mount "${DEVDIR}" /mnt/usbstick/ &>/dev/null ; then
  228.         dostuff
  229.     fi
  230. fi
  231.  
  232. rm -rf /tmp/soft
  233.